热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

循环体|量值_Golang程序流程控制

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Golang程序流程控制相关的知识,希望对你有一定的参考价值。 5.1 程序流程控制控件基本介绍 在程序中,程序运行的流程控制觉得程序是

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Golang程序流程控制相关的知识,希望对你有一定的参考价值。



5.1 程序流程控制控件基本介绍

在程序中,程序运行的流程控制觉得程序是如何运行的,是我们必须掌握的,主要有三大流程控制语句。


  1. 顺序控制
  2. 分支控制
  3. 循环控制

5.2 顺序控制

顺序控制介绍

程序从上到下逐行地进行,中间没有任何判断和跳转。


5.3 分支控制

分支控制的基本介绍

分支控制就是让程序有选择执行,有下面三种形式


  1. 单分支
  2. 双分支
  3. 多分支

单分支



基本语法
if 条件表达式
执行代码块

说明:当条件表达式为true时,就会执行的代码
注意是必须有的,就算你只写一行代码。


案例说明
请大家看个案例【ifDemo.go】
编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出“你的年龄大于18岁,要对自己的行为负责!”

var age int
fmt.Println("请输入年龄:")
fmt.Scanln(&age)
if age > 18
fmt.Println("你年龄大于18,要对自己的行为负责!")

双分支



基本语法




if 条件表达式
执行代码块1
else
执行代码块2


案例

var age int
fmt.Println("请输入年龄:")
fmt.Scanln(&age)
if age > 18
fmt.Println("你年龄大于18,要对自己的行为负责!")
esle
fmt.Println("你的年龄不大这次放过你了")

var x int = 4
var y int = 1
if()
if(y>2)
fmt.Println(x+y)

fmt.Println("atguigu")
else
fmt.Println("x is = ",x)

// 输出atguigu
var x int = 4
if x>2
fmt.Println("ok")
else
fmt.Println("hello")
// 编译错误,原因没有
var x int = 4
if x>2
fmt.Println("ok")

else
fmt.Println("hello")

// 编译错误,else不能换行

嵌套分支



基本介绍


在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支结构成为内层分支外面的分支结构称为外层分支。

基本用法

if 条件表达式
if 条件表达式

else


说明:嵌套分支不宜过多,建议控制在3层内


5.4 switch 分支控制

基本的介绍

1.switch语句用于基于不同条件执行不同动作,每一个case分支都是唯一的,从上到下逐一测试,知道匹配为止
2.匹配项后面也不需要再加break

基本语法

switch 表达式
case 表达式1,表达式2,...:
语句块1
case 表达式3,表达式4,...:
语句块2
// 这里可以有多个case语句
default:
语句块

switch的流程图

对上图的说明和总结


  1. switch 的执行流程是,先执行表达式,得到值。然后和case的表达式比较,如果相等,就匹配到,然后执行对应的case的语句块,然后退出switch控制
  2. 如果switch的表达式的值没有和任何的case的表达式匹配成功,则执行default的语句块。执行后退出switch的控制。
  3. golang的case后的表达式可以有多个,使用逗号隔离
  4. golang中的case语句块不需要写break,因为默认会有,即在默认情况下,当程序执行完case语句块后,就直接退出该switch控制结构。

switch快速入门案例

/*
编写一个程序,该程序可以介绍一个字符,比如:a,b,c,d,e,f,g a表示星期一,b表示星期二 根据用户的输入显示相依的信息
要求使用switch语句完成
*/

var key byte
fmt.Println("请输入一个字符 a,b,c,d,e,f,g")
fmt.Scanf("%c",&key)
switch key
case 'a':
fmt.Println("周一,猴子穿新衣")
case 'b':
fmt.Println("周二,猴子当小二")
case 'c':
fmt.Println("周三,猴子爬雪山")
// ...
default:
fmt.Println("输入有误......")

switch的使用的注意事项和细节


  1. case/switch后是一个表达式(即:常量值,变量,一个有返回值的函数等都可以)

  2. case后的各个表达式的数据类型,必须和switch的表达式数据类型一致

  3. case后面可以带多个表达式,使用逗号间隔,比如case表达式1,表达式2…case后面的表达式如果是常量值(字面量),则要求不能重复

  4. case后面的表达式如果是常量值(字面量),则要求不能重复

  5. case后面不需要带break,程序匹配到一个case后悔执行对应的代码块,然后退出switch,如果一个都匹配不到,则执行default

  6. default语句不是必须的

  7. switch后面也可以不带表达式,类似if…else分支来使用【案例演示】


8. switch后也可以直接声明一个变量,分号结束,不推荐。【案例演示】


  1. switch穿透fallthrough,如果在case语句块后增加failthrough,则会继续执行下一个case,也叫switch穿透

  2. Type Switch:switch 语句还可以被用于type-switch来判断某个interface变量中实际指向的变量类型

switch的课堂练习


  1. 使用switch把小写类型的char型转为大写(键盘输入)。只转换a,b,c,d,e 其他的输入“other”

  • 使用switch把小写类型的char型转换为大写(键盘输入)
  • 只转换a,b,c,d,e, 其他的输出“other”

func main()
var char byte
fmt.Println("请输入一个字符...")
fmt.Scanf("%c",&char)
switch char
case 'a':
fmt.Println("A")
case 'b':
fmt.Println("B")
case 'c':
fmt.Println("C")
case 'd':
fmt.Println("D")
case 'e':
fmt.Println("E")
default :
fmt.Println("other")



  1. 对学生成绩大于60分的,输出“合格”,低于60分的,输出“不合格”。(注:输入的成绩不能大于100)

var score float64
fmt.Println("请输入成绩")
fmt.Scanln(&score)
switch int(score/60)
case 1:
fmt.Println("及格")
case 0:
fmt.Println("不及格")
default:
fmt.Println("输入有误...")

switch和if的比较

1.如果判断的具体数值不多,而且符合整数,浮点数,字符,字符串这几种类型,建议使用switch语句,简介高效
2.其他情况,对区间判断和结果为bool类型的判断,使用if,if的范围更广


5.5 for循环控制

基本介绍

听其名而知其意,就是让我们的一段代码循环的执行。

一个需求

请大家看个案例【for】编写一个程序,可以打印10句

for i :&#61; 1;i<&#61;10;i&#43;&#43;
fmt.Println("hellow,world",i)

for循环的基本语法

语法格式
for 循环变量初始化&#xff1b;循环条件&#xff1b;循环变量迭代
循环操作&#xff08;语句&#xff09;

对上面的语法格式说明

a.对for循环来说&#xff0c;有四个要素
b. 循环变量初始化
c.循环条件
d.循环操作&#xff08;语句&#xff09;&#xff0c;有人也叫循环体
e.循环变量迭代
for循环的顺序说明&#xff1a;
1.执行循环变量初始化 比如 i&#61;1
2.执行循环条件&#xff0c; 比如 i<&#61;10
3.如果循环条件为真&#xff0c;就执行循环操作 比如 fmt.Println(“…”)
4.执行循环变量迭代&#xff0c;比如 i&#43;&#43;
5.反复执行2,3,4步骤&#xff0c;直到循环条件为false&#xff0c;就退出for循环

for循环执行流程分析
for循环的流程图

for循环的使用注意事项和细节讨论
1.循环条件是返回一个布尔值的表达式
2.for循环的第二种使用方式
for 循环判断条件
// 循环执行语句

将变量初始化和变量迭代写到其他位置

j :&#61; 1
for j <&#61; 10
fmt.println("hello,world",j)
j&#43;&#43;

3.for循环的第三种使用方式
for
// 循环执行语句

上面的写法等价for&#xff1b;&#xff1b;是一个无限循环&#xff0c;通常需要配合break语句使用

k :&#61; 1
for
if k <&#61; 10
fmt.Println("ok~")
else
break

k&#43;&#43;


5.8 break的注意事项和使用细节

  1. break语句出现在多层嵌套的语句块中时&#xff0c;可以通过标签指明要终止的是那一层语句块

lable2:
for i :&#61; 0; i<4;i&#43;&#43;
// lable1: //设置一个标签
for j :&#61; 0;j<10;j&#43;&#43;
if j&#61;&#61;2
// break // break 默认会她跳出最近的for循环
// break lable1
break lable2 // j&#61;0 j&#61;1

fmt.Println("j&#61;",j)



  1. 对以上案例说明
    break默认会跳出最近的for循环&#xff0c;break后面可以指定标签&#xff0c;跳出标签对应的for循环

5.9 跳转控制语句 -continue

基本介绍
continue语句用于结束本次循环&#xff0c;继续下次循环
continue语句出现在多层数量的循环语句体中时&#xff0c;可以通过标签指明要跳过的是哪一类循环&#xff0c;这个和前面的break标签的使用的规则一样

基本语法


continue

continue流程图


5.10 跳转控制语句 goto

goto基本介绍


  1. Go语言的goto语句可以无条件地转移到程序中指定的行
  2. goto语句通常与条件语言配合使用&#xff0c;可以来实现条件转移&#xff0c;跳出循环体等功能。
  3. 在Go程序设计中一般不主张使用goto语句&#xff0c;以免造成流程的混淆&#xff0c;使理解和调试程序都产生困难

goto基本语法

goto label
......
label:statement

goto 的流程图

入门案例

func main()
fmt.Println("ok1")
goto lable:
fmt.Println("ok2")
fmt.Println("ok3")
lable:
fmt.Println("ok4")


5.11 跳转控制语句-return

介绍
return 使用在方法或者函数中&#xff0c;表示跳出来所在的方法或函数&#xff0c;在讲解函数的时候&#xff0c;会详细的介绍

说明


  1. 如果return在普通的函数&#xff0c;则表示跳出该函数&#xff0c;即不再执行函数中return后面的代码&#xff0c;也可以理解成终止函数。
  2. 如果return是在main函数中&#xff0c;表示终止main函数&#xff0c;也就是说终止程序。

感谢大家观看&#xff0c;我们下次见


推荐阅读
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
author-avatar
huangyong黄勇_513
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有